package com.smit.dvb.system;

import com.smit.adapter.DVBAdapter;
import com.smit.utils.LogUtil;

import java.util.ArrayList;
import java.util.List;

/**
 * DVB 系统控制
 */
public class SystemControl {
    /**
     * 系统出错
     */
    public static final int MSG_SYSTEM_ERROR = 601;
    /**
     * 系统初始化
     */
    public static final int MSG_SYSTEM_INITIALIZE = 602;
    /**
     * 系统唤醒
     */
    public static final int MSG_SYSTEM_RESUME = 603;
    /**
     * 系统待机
     */
    public static final int MSG_SYSTEM_STANDBY = 604;
    /**
     * 系统结束
     */
    public static final int MSG_SYSTEM_TERMINATE = 605;
    /**
     * 系统初始化完成
     */
    public static final int MSG_SYSTEM_INIT_OK = 606;

    private static final String TAG = "SystemControl";
    private final List<ISystemCallback> systemCallbackList = new ArrayList<ISystemCallback>();

    /**
     * <p> 添加一个system回调 <br/>
     *
     * @param callback 回调接口
     */
    public void addCallback(ISystemCallback callback) {
        if (!systemCallbackList.contains(callback)) {
            systemCallbackList.add(callback);
        }
    }

    /**
     * <p> 移除一个system回调 <br/>
     *
     * @param callback 回调接口<br/>
     */
    public void removeCallback(ISystemCallback callback) {
        if (systemCallbackList.contains(callback)) {
            systemCallbackList.remove(callback);
        }
    }

    /**
     * <p> 获取所有system回调对象 <br/>
     *
     * @return 返回所有注册进来的回调
     */
    public List<ISystemCallback> getCallbackList() {
        return systemCallbackList;
    }

    /**
     * 初始化dvb系统
     *
     * @return 0成功，其他失败
     */
    public int initialize() {
        LogUtil.info(TAG, "initialize start>>>");
        return DVBAdapter.getInstance().getDVBManager().getDVBService().initialize();
    }

    /**
     * 唤醒DVB系统
     */
    public void resume() {
        DVBAdapter.getInstance().getDVBManager().getDVBService().resume();
    }

    /**
     * DVB系统待机
     */
    public void standby() {
        DVBAdapter.getInstance().getDVBManager().getDVBService().standby();
    }

    /**
     * 停止DVB系统
     *
     * @return 0成功，其他失败
     */
    public int terminate() {
        return DVBAdapter.getInstance().getDVBManager().getDVBService().terminate();
    }

}